package com.tegtech.module.captcha.domain;

import com.tegtech.module.captcha.properties.CaptchaProperties;
import com.tegtech.module.sms.service.ITemplate;

import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 验证码规则
 * @Author Jun
 * @date 2021年5月20日 下午3:30:07
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CaptchaRule {
	
	/** 验证码类型 **/
	private String key;
	
	/** 验证码有效期，单位：秒 **/
	private Integer expireTime;
	
	/** 最小间隔发送时间，单位：秒 **/
	private Integer intervalTime;
	
	/** 验证码长度 **/
	private Integer codeLength;
	
	/** 每天最大发送次数， -1表示不限次数 **/
	private Integer maxNum;
	
	/** 短信模板 **/
	private ITemplate template;
	
	public String getKey() {
		return StrUtil.isBlank(key) ? CaptchaProperties.getKey() : key;
	}

	public Integer getExpireTime() {
		return expireTime == null ? CaptchaProperties.getExpireTime() : expireTime;
	}

	public Integer getIntervalTime() {
		return intervalTime == null ? CaptchaProperties.getIntervalTime() : intervalTime;
	}

	public Integer getCodeLength() {
		return codeLength == null ? CaptchaProperties.getCodeLength() : codeLength;
	}

	public Integer getMaxNum() {
		return maxNum == null ? CaptchaProperties.getMaxNum() : maxNum;
	}

	public CaptchaRule(String key, Integer maxNum, ITemplate template) {
		super();
		this.key = key;
		this.maxNum = maxNum;
		this.template = template;
	}

}
